13550
1897
На этот вопрос уже есть ответы здесь:
Express js - невозможно перенаправить
(4 ответа)
Закрыт 7 лет назад.
Я использую passwordjs с промежуточным программным обеспечением ниже. Предполагается, чтобы проверить, входит ли пользователь в систему, когда он запрашивает определенные вещи. Если он не вошел в систему, он должен быть перенаправлен на страницу входа.
У меня есть следующий маршрут запроса:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Этот маршрут будет вызываться, когда пользователь пытается обновить ресурс под названием Fantasy Team на веб-сайте.
auth.requiresLogin - это промежуточное ПО:
exports.requiresLogin = function (req, res, next) {
if (req.isAuthenticated ()) {
вернуться далее ()
}
возврат res.redirect ("/ вход");
};
После входа в систему я смоделировал истечение срока сеанса, удалив cookie сеанса. После этого через веб-сайт я сделал запрос PUT '/ fantasyteams / 123', чтобы обновить команду фэнтези номер 123.
fantasyteams.update - это просто операция сохранения mongodb / mongoose:
export.update = function (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (function (err) {
res.jsonp (fantasyteam);
});
};
Как и ожидалось, обработчик маршрута (app.put ...) выше поймал запрос, передал его промежуточному программному обеспечению auth.requiresLogin, чтобы проверить, вошел ли пользователь в систему. Таким образом, оказывается, что пользователь не вошел в систему, так как я удалил его файл cookie сеанса. res.redirect вызывается должным образом. Однако веб-сайт не перенаправляет на страницу входа. Я вижу это в журналах команд node.js:
PUT / вход 404 328 мс
Что я сделал не так? 
Похоже, проблема в том, что у вас нет обработчика маршрута для PUT / входа. Исходный запрос был помещен, поэтому, когда он перенаправляет, он все еще является частью того же запроса на размещение от браузера. Просто добавьте обработчик для put / post / что угодно с app.all ('/ signin')
3
|
Не тот ответ, который вы ищете? Посмотрите другие вопросы с метками node.js session cookies или укажите свой вопрос.